SajátĂtsa el a Scikit-learn Pipeline-okat a gĂ©pi tanulási munkafolyamatok egyszerűsĂtĂ©se Ă©rdekĂ©ben. Tanulja meg automatizálni az elĹ‘feldolgozást, a modellkĂ©pzĂ©st Ă©s a hiperparamĂ©ter-hangolást a robusztus, reprodukálhatĂł Ă©s gyártásra kĂ©sz modellek Ă©rdekĂ©ben.
Scikit-learn Pipeline: A gépi tanulási munkafolyamat automatizálásának végső útmutatója
A gĂ©pi tanulás világában egy modell felĂ©pĂtĂ©se gyakran a csillogĂł utolsĂł lĂ©pĂ©skĂ©nt van bemutatva. A tapasztalt adattudĂłsok Ă©s ML mĂ©rnökök azonban tudják, hogy egy robusztus modellhez vezetĹ‘ Ăşt egy sor kulcsfontosságĂş, gyakran ismĂ©tlĹ‘dĹ‘ Ă©s hibalehetĹ‘sĂ©gekkel teli lĂ©pĂ©ssel van kikövezve: adattisztĂtás, funkciĂłskálázás, kategorikus változĂłk kĂłdolása Ă©s mĂ©g sok más. Ezen lĂ©pĂ©sek kĂĽlön-kĂĽlön törtĂ©nĹ‘ kezelĂ©se a kĂ©pzĂ©si, validáciĂłs Ă©s tesztkĂ©szletekhez gyorsan logisztikai rĂ©málommá válhat, ami finom hibákhoz Ă©s ami a legveszĂ©lyesebb, adatszivárgáshoz vezethet.
Itt jön a Scikit-learn Pipeline a segĂtsĂ©gĂĽnkre. Ez nem csak egy kĂ©nyelmi szempont; ez egy alapvetĹ‘ eszköz a professzionális, reprodukálhatĂł Ă©s gyártásra kĂ©sz gĂ©pi tanulási rendszerek felĂ©pĂtĂ©sĂ©hez. Ez az átfogĂł ĂştmutatĂł vĂ©gigvezeti Ă–nt mindenen, amit tudnia kell a Scikit-learn Pipeline-ok elsajátĂtásához, az alapfogalmaktĂłl a fejlett technikákig.
A probléma: A manuális gépi tanulási munkafolyamat
VegyĂĽnk egy tipikus felĂĽgyelt tanulási feladatot. MielĹ‘tt akár a model.fit() fĂĽggvĂ©nyt is meghĂvhatná, elĹ‘ kell kĂ©szĂtenie az adatait. Egy standard munkafolyamat Ăgy nĂ©zhet ki:
- Adatok felosztása: Ossza fel az adatkĂ©szletĂ©t kĂ©pzĂ©si Ă©s tesztkĂ©szletekre. Ez az elsĹ‘ Ă©s legkritikusabb lĂ©pĂ©s annak biztosĂtására, hogy Ă©rtĂ©kelni tudja a modell teljesĂtmĂ©nyĂ©t a nem látott adatokon.
- HiányzĂł Ă©rtĂ©kek kezelĂ©se: AzonosĂtsa Ă©s pĂłtolja a hiányzĂł adatokat a kĂ©pzĂ©si kĂ©szletben (pl. a közĂ©pĂ©rtĂ©k, a medián vagy egy konstans használatával).
- Kategorikus jellemzők kódolása: Konvertálja a nem numerikus oszlopokat, mint például a „Country” vagy a „Product Category” numerikus formátumba olyan technikák alkalmazásával, mint a One-Hot Encoding vagy az Ordinal Encoding.
- Numerikus jellemzők skálázása: Hozzon minden numerikus jellemzőt hasonló skálára olyan módszerekkel, mint a Standardization (
StandardScaler) vagy a Normalization (MinMaxScaler). Ez kulcsfontosságĂş számos algoritmushoz, mint pĂ©ldául az SVM-ek, a logisztikus regressziĂł Ă©s a neurális hálĂłzatok. - A modell betanĂtása: VĂ©gĂĽl tanĂtsa be a kiválasztott gĂ©pi tanulási modellt az elĹ‘feldolgozott kĂ©pzĂ©si adatokon.
Most, amikor elĹ‘rejelzĂ©seket szeretne kĂ©szĂteni a tesztkĂ©szleten (vagy Ăşj, nem látott adatokon), pontosan ugyanazokat az elĹ‘feldolgozási lĂ©pĂ©seket kell megismĂ©telnie. Alkalmaznia kell ugyanazt a pĂłtlási stratĂ©giát (a kĂ©pzĂ©si kĂ©szletbĹ‘l számĂtott Ă©rtĂ©kkel), ugyanazt a kĂłdolási sĂ©mát Ă©s ugyanazokat a skálázási paramĂ©tereket. Az összes illesztett transzformátor manuális nyomon követĂ©se fáradságos Ă©s a hibák fĹ‘ forrása.
A legnagyobb kockázat itt az adatszivárgás. Ez akkor fordul elĹ‘, amikor a tesztkĂ©szletbĹ‘l származĂł informáciĂłk vĂ©letlenĂĽl beszivárognak a kĂ©pzĂ©si folyamatba. PĂ©ldául, ha a hiányzĂł Ă©rtĂ©kek pĂłtlásához szĂĽksĂ©ges közĂ©pĂ©rtĂ©ket vagy a skálázási paramĂ©tereket a teljes adatkĂ©szletbĹ‘l számĂtja ki a felosztás elĹ‘tt, akkor a modell implicit mĂłdon a tesztadatokbĂłl tanul. Ez tĂşlságosan optimista teljesĂtmĂ©nybecslĂ©shez Ă©s egy olyan modellhez vezet, amely csĂşnyán elbukik a valĂłs világban.
A Scikit-learn Pipeline bemutatása: Az automatizált megoldás
A Scikit-learn Pipeline egy olyan objektum, amely több adattranszformációs lépést és egy végső becslőt (például egy osztályozót vagy regresszort) fűz össze egyetlen, egységes objektumba. Úgy gondolhat rá, mint egy szerelőszalagra az adatai számára.
Amikor meghĂvja a .fit() fĂĽggvĂ©nyt egy Pipeline-on, az egymás után alkalmazza a fit_transform() fĂĽggvĂ©nyt minden közbensĹ‘ lĂ©pĂ©sre a kĂ©pzĂ©si adatokon, az egyik lĂ©pĂ©s kimenetĂ©t a következĹ‘ lĂ©pĂ©s bemenetekĂ©nt átadva. VĂ©gĂĽl meghĂvja a .fit() fĂĽggvĂ©nyt az utolsĂł lĂ©pĂ©sre, a becslĹ‘re. Amikor meghĂvja a .predict() vagy a .transform() fĂĽggvĂ©nyt a Pipeline-on, az csak az egyes közbensĹ‘ lĂ©pĂ©sek .transform() metĂłdusát alkalmazza az Ăşj adatokra, mielĹ‘tt elĹ‘rejelzĂ©st kĂ©szĂtene a vĂ©gsĹ‘ becslĹ‘vel.
A Pipeline-ok használatának fő előnyei
- Adatszivárgás megakadályozása: Ez a legkritikusabb elĹ‘ny. Azáltal, hogy az összes elĹ‘feldolgozást beágyazza a pipeline-ba, biztosĂtja, hogy a transzformáciĂłkat kizárĂłlag a kĂ©pzĂ©si adatokbĂłl tanulják meg a keresztvalidáciĂł során, Ă©s helyesen alkalmazzák a validáciĂłs/teszt adatokra.
- EgyszerűsĂ©g Ă©s szervezettsĂ©g: A teljes munkafolyamat, a nyers adatoktĂłl a betanĂtott modellig, egyetlen objektumba van sűrĂtve. Ez tisztábbá, olvashatĂłbbá Ă©s könnyebben kezelhetĹ‘vĂ© teszi a kĂłdot.
- ReprodukálhatĂłság: Egy Pipeline objektum magában foglalja a teljes modellezĂ©si folyamatot. KönnyedĂ©n elmentheti ezt az egyetlen objektumot (pl. a `joblib` vagy a `pickle` használatával), Ă©s kĂ©sĹ‘bb betöltheti, hogy elĹ‘rejelzĂ©seket kĂ©szĂtsen, biztosĂtva, hogy minden alkalommal pontosan ugyanazokat a lĂ©pĂ©seket kövessĂ©k.
- Hatékonyság a rács keresésben: Hiperparaméter hangolást végezhet a teljes pipeline-on egyszerre, megtalálva a legjobb paramétereket mind az előfeldolgozási lépésekhez, mind a végső modellhez egyidejűleg. Ezt a hatékony funkciót később fogjuk feltárni.
Az elsĹ‘ egyszerű Pipeline felĂ©pĂtĂ©se
KezdjĂĽk egy alapvetĹ‘ pĂ©ldával. KĂ©pzeljĂĽk el, hogy van egy numerikus adatkĂ©szletĂĽnk, Ă©s skálázni szeretnĂ©nk az adatokat, mielĹ‘tt betanĂtunk egy logisztikus regressziĂłs modellt. ĂŤme, hogyan Ă©pĂtene fel egy pipeline-t ehhez.
ElĹ‘ször is, állĂtsuk be a környezetĂĽnket, Ă©s hozzunk lĂ©tre nĂ©hány mintaadatot.
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score
# Generate some sample data
X, y = np.random.rand(100, 5) * 10, (np.random.rand(100) > 0.5).astype(int)
# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Most pedig definiáljuk a pipeline-unkat. Egy pipeline úgy jön létre, hogy megadunk egy listát a lépésekről. Minden lépés egy tuple, amely tartalmaz egy nevet (egy tetszőleges karakterláncot) és magát a transzformátor vagy becslő objektumot.
# Create the pipeline steps
steps = [
('scaler', StandardScaler()),
('classifier', LogisticRegression())
]
# Create the Pipeline object
pipe = Pipeline(steps)
# Now, you can treat the 'pipe' object as if it were a regular model.
# Let's train it on our training data.
pipe.fit(X_train, y_train)
# Make predictions on the test data
y_pred = pipe.predict(X_test)
# Evaluate the model
accuracy = accuracy_score(y_test, y_pred)
print(f"Pipeline Accuracy: {accuracy:.4f}")
Ennyi! NĂ©hány sorban kombináltuk a skálázást Ă©s az osztályozást. A Scikit-learn kezeli az összes közbensĹ‘ logikát. Amikor meghĂvjuk a pipe.fit(X_train, y_train) fĂĽggvĂ©nyt, az elĹ‘ször meghĂvja a StandardScaler().fit_transform(X_train) fĂĽggvĂ©nyt, majd az eredmĂ©nyt átadja a LogisticRegression().fit() fĂĽggvĂ©nynek. Amikor meghĂvjuk a pipe.predict(X_test) fĂĽggvĂ©nyt, az alkalmazza a már illesztett skálázĂłt a StandardScaler().transform(X_test) segĂtsĂ©gĂ©vel, mielĹ‘tt elĹ‘rejelzĂ©seket kĂ©szĂtene a logisztikus regressziĂłs modellel.
Heterogén adatok kezelése: A `ColumnTransformer`
A valĂłs adatkĂ©szletek ritkán egyszerűek. Gyakran adattĂpusok keverĂ©kĂ©t tartalmazzák: numerikus oszlopok, amelyeket skálázni kell, kategorikus oszlopok, amelyeket kĂłdolni kell, Ă©s esetleg szöveges oszlopok, amelyeket vektorizálni kell. Egy egyszerű szekvenciális pipeline nem elegendĹ‘ ehhez, mivel kĂĽlönbözĹ‘ transzformáciĂłkat kell alkalmaznia a kĂĽlönbözĹ‘ oszlopokra.Itt ragyog a ColumnTransformer. LehetĹ‘vĂ© teszi, hogy kĂĽlönbözĹ‘ transzformátorokat alkalmazzon az adatok kĂĽlönbözĹ‘ oszlopainak rĂ©szhalmazaira, majd intelligensen összefűzze az eredmĂ©nyeket. Ez a tökĂ©letes eszköz arra, hogy egy nagyobb pipeline-on belĂĽl elĹ‘feldolgozási lĂ©pĂ©skĂ©nt használja.
Példa: Numerikus és kategorikus jellemzők kombinálása
Hozzuk létre egy reálisabb adatkészletet numerikus és kategorikus jellemzőkkel a pandas használatával.
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
from sklearn.impute import SimpleImputer
# Create a sample DataFrame
data = {
'age': [25, 30, 45, 35, 50, np.nan, 22],
'salary': [50000, 60000, 120000, 80000, 150000, 75000, 45000],
'country': ['USA', 'Canada', 'USA', 'UK', 'Canada', 'USA', 'UK'],
'purchased': [0, 1, 1, 0, 1, 1, 0]
}
df = pd.DataFrame(data)
X = df.drop('purchased', axis=1)
y = df['purchased']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Identify numerical and categorical columns
numerical_features = ['age', 'salary']
categorical_features = ['country']
Az előfeldolgozási stratégiánk a következő lesz:
- A numerikus oszlopok (
age,salary) esetében: A hiányzó értékeket a mediánnal pótoljuk, majd skálázzuk őket. - A kategorikus oszlopok (
country) esetében: A hiányzó értékeket a leggyakoribb kategóriával pótoljuk, majd one-hot kódoljuk őket.
Ezeket a lĂ©pĂ©seket kĂ©t kĂĽlönállĂł mini-pipeline segĂtsĂ©gĂ©vel definiálhatjuk.
# Create a pipeline for numerical features
numeric_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='median')),
('scaler', StandardScaler())
])
# Create a pipeline for categorical features
categorical_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='most_frequent')),
('onehot', OneHotEncoder(handle_unknown='ignore'))
])
Most a `ColumnTransformer` segĂtsĂ©gĂ©vel alkalmazzuk ezeket a pipeline-okat a megfelelĹ‘ oszlopokra.
# Create the preprocessor with ColumnTransformer
preprocessor = ColumnTransformer(
transformers=[
('num', numeric_transformer, numerical_features),
('cat', categorical_transformer, categorical_features)
])
Végül ezt a `preprocessor`-t az első lépésként helyezhetjük el a fő pipeline-unkban, amelyet a végső becslőnk követ.
from sklearn.ensemble import RandomForestClassifier
# Create the full pipeline
full_pipeline = Pipeline(steps=[
('preprocessor', preprocessor),
('classifier', RandomForestClassifier(random_state=42))
])
# Train and evaluate the full pipeline
full_pipeline.fit(X_train, y_train)
print("Model score on test data:", full_pipeline.score(X_test, y_test))
# You can now make predictions on new raw data
new_data = pd.DataFrame({
'age': [40, 28],
'salary': [90000, 55000],
'country': ['USA', 'Germany'] # 'Germany' is an unknown category
})
predictions = full_pipeline.predict(new_data)
print("Predictions for new data:", predictions)
Figyelje meg, milyen elegánsan kezeli ez a komplex munkafolyamatot. A `handle_unknown='ignore'` paraméter a `OneHotEncoder`-ben különösen hasznos a termelési rendszerekben, mivel megakadályozza a hibákat, amikor új, nem látott kategóriák jelennek meg az adatokban.
Speciális Pipeline technikák
A Pipeline-ok mĂ©g nagyobb teljesĂtmĂ©nyt Ă©s rugalmasságot kĂnálnak. FedezzĂĽk fel nĂ©hány speciális funkciĂłt, amelyek elengedhetetlenek a professzionális gĂ©pi tanulási projektekhez.EgyĂ©ni transzformátorok lĂ©trehozása
NĂ©ha a beĂ©pĂtett Scikit-learn transzformátorok nem elegendĹ‘ek. ElĹ‘fordulhat, hogy egy domain-specifikus transzformáciĂłt kell vĂ©grehajtania, pĂ©ldául egy jellemzĹ‘ logaritmusának kivonását vagy kĂ©t jellemzĹ‘ kombinálását egy Ăşjba. KönnyedĂ©n lĂ©trehozhatja saját egyĂ©ni transzformátorait, amelyek zökkenĹ‘mentesen integrálĂłdnak egy pipeline-ba.
Ehhez létre kell hoznia egy osztályt, amely a `BaseEstimator` és a `TransformerMixin` osztályokból öröklődik. Csak a `fit()` és a `transform()` metódusokat kell implementálnia (és egy `__init__()`-t, ha szükséges).
Hozzuk létre egy transzformátort, amely hozzáad egy új jellemzőt: a `salary` és az `age` arányát.
from sklearn.base import BaseEstimator, TransformerMixin
# Define column indices (can also pass names)
age_ix, salary_ix = 0, 1
class FeatureRatioAdder(BaseEstimator, TransformerMixin):
def __init__(self):
pass # No parameters to set
def fit(self, X, y=None):
return self # Nothing to learn during fit, so just return self
def transform(self, X):
salary_age_ratio = X[:, salary_ix] / X[:, age_ix]
return np.c_[X, salary_age_ratio] # Concatenate original X with new feature
Ezután ezt az egyéni transzformátort beilleszthetné a numerikus feldolgozó pipeline-jába:
numeric_transformer_with_custom = Pipeline(steps=[
('imputer', SimpleImputer(strategy='median')),
('ratio_adder', FeatureRatioAdder()), # Our custom transformer
('scaler', StandardScaler())
])
Ez a testreszabási szint lehetĹ‘vĂ© teszi, hogy a teljes jellemzĹ‘tervezĂ©si logikát beágyazza a pipeline-ba, Ăgy a munkafolyamat rendkĂvĂĽl hordozhatĂłvá Ă©s reprodukálhatĂłvá válik.
HiperparamĂ©ter-hangolás Pipeline-okkal a `GridSearchCV` segĂtsĂ©gĂ©vel
Ez vitathatatlanul a Pipeline-ok egyik legerősebb alkalmazása. Egyszerre keresheti meg a legjobb hiperparamétereket a teljes munkafolyamathoz, beleértve az előfeldolgozási lépéseket és a végső modellt is.
Annak meghatározásához, hogy mely paramétereket kell hangolni, egy speciális szintaxist használ: `step_name__parameter_name`.
BĹ‘vĂtsĂĽk ki az elĹ‘zĹ‘ pĂ©ldánkat, Ă©s hangoljuk be a hiperparamĂ©tereket mind a preprocessorunkban lĂ©vĹ‘ imputerhez, mind a `RandomForestClassifier`-hez.
from sklearn.model_selection import GridSearchCV
# We use the 'full_pipeline' from the ColumnTransformer example
# Define the parameter grid
param_grid = {
'preprocessor__num__imputer__strategy': ['mean', 'median'],
'classifier__n_estimators': [50, 100, 200],
'classifier__max_depth': [None, 10, 20],
'classifier__min_samples_leaf': [1, 2, 4]
}
# Create the GridSearchCV object
grid_search = GridSearchCV(full_pipeline, param_grid, cv=5, verbose=1, n_jobs=-1)
# Fit it to the data
grid_search.fit(X_train, y_train)
# Print the best parameters and score
print("Best parameters found: ", grid_search.best_params_)
print("Best cross-validation score: ", grid_search.best_score_)
# The best estimator is already refitted on the whole training data
best_model = grid_search.best_estimator_
print("Test set score with best model: ", best_model.score(X_test, y_test))
Nézze meg alaposan a `param_grid` kulcsait:
'preprocessor__num__imputer__strategy': Ez a `SimpleImputer` `strategy` paraméterét célozza meg, amelynek a neve `imputer` a `num` nevű numerikus pipeline-ban, amely maga is a `preprocessor` nevű `ColumnTransformer`-ben van.'classifier__n_estimators': Ez a végső becslő `n_estimators` paraméterét célozza meg, amelynek a neve `classifier`.
Ezzel a `GridSearchCV` helyesen kipróbál minden kombinációt, és megtalálja a teljes munkafolyamat optimális paraméterkészletét, teljesen megakadályozva az adatszivárgást a hangolási folyamat során, mivel minden előfeldolgozás minden keresztvalidációs hajtásban megtörténik.
A Pipeline vizualizálása és ellenőrzése
A komplex pipeline-ok nehezen áttekinthetĹ‘vĂ© válhatnak. A Scikit-learn nagyszerű mĂłdszert kĂnál a vizualizálásukra. A 0.23-as verziĂłtĂłl kezdve interaktĂv HTML-ábrázolást kaphat.
from sklearn import set_config
# Set display to 'diagram' to get the visual representation
set_config(display='diagram')
# Now, simply displaying the pipeline object in a Jupyter Notebook or similar environment will render it
full_pipeline
Ez egy diagramot generál, amely megmutatja az adatok áramlását az egyes transzformátorokon és becslőkön keresztül, a nevükkel együtt. Ez hihetetlenül hasznos a hibakereséshez, a munka megosztásához és a modell szerkezetének megértéséhez.
A felszerelt pipeline egyes lĂ©pĂ©seit a nevĂĽk segĂtsĂ©gĂ©vel is elĂ©rheti:
# Access the final classifier of the fitted pipeline
final_classifier = full_pipeline.named_steps['classifier']
print("Feature importances:", final_classifier.feature_importances_)
# Access the OneHotEncoder to see the learned categories
onehot_encoder = full_pipeline.named_steps['preprocessor'].named_transformers_['cat'].named_steps['onehot']
print("Categorical features learned:", onehot_encoder.categories_)
Gyakori buktatók és bevált gyakorlatok
- Helytelen adatokra illesztés: Mindig, mindig csak a képzési adatokra illessze a pipeline-t. Soha ne illessze a teljes adatkészletre vagy a tesztkészletre. Ez a kardinális szabály az adatszivárgás megelőzésére.
- Adatformátumok: Ăśgyeljen az egyes lĂ©pĂ©sek által várt adatformátumra. Egyes transzformátorok (pĂ©ldául az egyĂ©ni pĂ©ldánkban szereplĹ‘k) NumPy tömbökkel működhetnek, mĂg mások kĂ©nyelmesebbek a Pandas DataFrame-ekkel. A Scikit-learn általában jĂłl kezeli ezt, de Ă©rdemes odafigyelni rá, kĂĽlönösen az egyĂ©ni transzformátorok esetĂ©ben.
- Pipeline-ok mentĂ©se Ă©s betöltĂ©se: A modell telepĂtĂ©sĂ©hez el kell mentenie a felszerelt pipeline-t. Ennek standard mĂłdja a Python ökoszisztĂ©mában a `joblib` vagy a `pickle`. A `joblib` gyakran hatĂ©konyabb a nagymĂ©retű NumPy tömböket hordozĂł objektumok esetĂ©ben.
import joblib # Save the pipeline joblib.dump(full_pipeline, 'my_model_pipeline.joblib') # Load the pipeline later loaded_pipeline = joblib.load('my_model_pipeline.joblib') # Make predictions with the loaded model loaded_pipeline.predict(new_data) - Használjon leĂrĂł neveket: Adjon a pipeline lĂ©pĂ©seinek Ă©s a `ColumnTransformer` összetevĹ‘inek világos, leĂrĂł neveket (pl. 'numeric_imputer', 'categorical_encoder', 'svm_classifier'). Ez olvashatĂłbbá teszi a kĂłdot, Ă©s egyszerűsĂti a hiperparamĂ©ter-hangolást Ă©s a hibakeresĂ©st.
Következtetés: Miért nem alku tárgya a Pipeline-ok a professzionális ML számára
A Scikit-learn Pipeline-ok nem csupán egy eszköz a tisztább kĂłd Ărásához; egy paradigmaváltást kĂ©pviselnek a manuális, hibalehetĹ‘sĂ©gekkel teli szkriptelĂ©stĹ‘l a gĂ©pi tanulás szisztematikus, robusztus Ă©s reprodukálhatĂł megközelĂtĂ©sĂ©ig. Ezek a megbĂzhatĂł ML mĂ©rnöki gyakorlatok gerincĂ©t kĂ©pezik.A pipeline-ok elfogadásával a következĹ‘ket kapja:
- Robusztusság: Kiküszöböli a gépi tanulási projektek leggyakoribb hibaforrását – az adatszivárgást.
- HatĂ©konyság: EgyszerűsĂti a teljes munkafolyamatot, a funkciĂłtervezĂ©stĹ‘l a hiperparamĂ©ter-hangolásig, egyetlen, összefĂĽggĹ‘ egysĂ©gbe.
- ReprodukálhatĂłság: LĂ©trehoz egyetlen, szerializálhatĂł objektumot, amely tartalmazza a teljes modelllogikáját, Ăgy könnyen telepĂthetĹ‘ Ă©s megoszthatĂł.
Ha komolyan gondolja a gĂ©pi tanulási modellek Ă©pĂtĂ©sĂ©t, amelyek megbĂzhatĂłan működnek a valĂłs világban, akkor a Scikit-learn Pipeline-ok elsajátĂtása nem opcionális – hanem elengedhetetlen. Kezdje el beĂ©pĂteni Ĺ‘ket a projektjeibe mĂ©g ma, Ă©s jobb, megbĂzhatĂłbb modelleket fog Ă©pĂteni gyorsabban, mint valaha.